#include <iostream>
#include <unistd.h>
#include <sys/wait.h>
#include <cstring>
#include <string>

using namespace std;

int main()
{
    pid_t pid = fork();  // 创建子进程

    if (pid == -1)
    {
        cerr << "创建进程失败！" << endl;
        return 1;
    }

    if (pid == 0)
    {  // 子进程
        // 接收命令行参数（学号和姓名）
        char* argv[] = {
            (char*)"./child1",       // 子进程可执行文件名
            (char*)"20251109",       // 学号
            (char*)"Jay",            // 姓名
            nullptr
        };
        execvp(argv[0], argv);  // 执行子进程程序
        cerr << "子进程执行失败！" << endl;  // 若exec失败才会执行
        return 1;
    } else {  // 父进程
        cout << "子进程创建成功，PID: " << pid << endl;
        waitpid(pid, nullptr, 0);  // 等待子进程结束
        cout << "子进程已退出" << endl;
    }

    return 0;
}
